I. Wzorce kreacyjne
1. Singleton
2. Budowniczy
3. Prototyp
4. Fabryka
5. Fabryka abstrakcyjna
II. Wzorce strukturalne
1. Adapter
2. Most
3. Kompozyt
4. Dekorator
5. Fasada
6. Pyłek
7. Pełnomocnik
III. Wzorce czynnościowe
1. Łańcuch zobowiązań
2. Polecenie
3. Interpreter
4. Iterator
5. Mediator
6. Pamiątka
7. Obserwator
8. Stan
9. Strategia
10. Metoda szablonowa
11. Odwiedzający

Pełnomocnik (proxy) - wzorzec projektowy (design pattern) - java

1. Cel:
Wzorzec Pełnomocnik (proxy) zastępuje lub odwołuje się do innego obiektu w celu kontrolowania dostępu do niego.
Proxy to dodanie nowej funkcjonalności, tworzysz interfejs do obiektu, opakowując go klasą, aby utworzyć to proxy.
Wadą jest że możemy mieć tylko jeden obiekt proxy.

2. Problem:
Chcemy mieć dostęp do obiektu tylko pod jakimiś warunkami.

3. Rozwiązanie:
Przechowuje odwołanie które zawiera dostęp do odpowiedniego obiektu.
Pełnomocnik zapewnia interface taki sam jak przedmiot przez co może być zastąpiony przedmiotem,
i jest odpowiedzialny za dodawanie i usuwanie przedmiotu.

4. Diagram klas wzorca Pełnomocnik (proxy):


5. Implementacja:
Interface naszego przedmiotu:
  1. public interface IFolder {
  2.     void performOperations();
  3. }
Implementacja prawdziego obiektu (przedmiotu):
  1. public class Folder implements IFolder {
  2.         public void performOperations() {
  3.                 System.out.println("Wykonywanie operacji na folderze");
  4.         }
  5. }
Klasa pomocnicza do uzyskania dostępu do obiektu (przedmiotu):
  1. public class User {
  2.         private String userName;
  3.         private String password;
  4.  
  5.         public User(String userName, String password) {
  6.                 this.userName = userName;
  7.                 this.password = password;
  8.         }
  9.  
  10.         public String getUserName() {
  11.                 return userName;
  12.         }
  13.         public String getPassword() {
  14.                 return password;
  15.         }
  16. }
To jest główna część wzorca pełnomocnika (proxy):
  1. public class FolderProxy implements IFolder {
  2.         private Folder folder;
  3.         private User user;
  4.  
  5.         public FolderProxy(User user) {
  6.                 this.user = user;
  7.         }
  8.  
  9.         public void performOperations() {
  10.                 if(user.getUserName().equalsIgnoreCase("javaedupl")
  11.                    && user.getPassword().equalsIgnoreCase("password")) {
  12.                         folder=new Folder();
  13.                         folder.performOperations();
  14.                 } else {
  15.                         System.out.println("Nie masz dostępu do tego folderu");
  16.                 }
  17.    }
  18. }
  19.  
i klasa testująca wzorzec pełnomocnika (proxy):
  1. public class ProxyTest {
  2.         public static void main(String[] args) {
  3.                 User user=new User("javaedupl","password");
  4.                 FolderProxy folderProxy=new FolderProxy(user);
  5.                 folderProxy.performOperations();
  6.                 // Wykonywanie operacji na folderze
  7.                 User userWrong=new User("abc","abc");
  8.                 FolderProxy folderProxyWrong=new FolderProxy(userWrong);
  9.                 folderProxyWrong.performOperations();
  10.                 // Nie masz dostępu do tego folderu
  11.         }
  12. }
6. Zastosowanie w kodzie java:
- java.lang.reflect.Proxy
- java.rmi.*
- javax.ejb.EJB
- javax.inject.Inject
- javax.persistence.PersistenceContext
created by cv.java.org.pl © 2023 All Rights Reserved.